package com.cskaoyan.javase.homework.primary._2array.basic;

/**
 * @description: 数组基础练习题
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 参加快乐男声比赛,有10个评委打分,(去掉一个最高一个最低)求最后的平均成绩
 * 提示：用数组装这些分数，并找到最大值和最小值去掉他们，然后算平均值。
 * 要求：必须提供三个方法：求最大值，最小值，平均分
 *
 * 求数组的最大值/最小值：假设法，假设数组当中第一个元素是最值，然后遍历数组逐个比较，最终得到最值
 * 数组当中元素的平均值： 先求和，然后除以数组的长度（这道题应该除以8）
 * 数组的求和： 先设定一个和的变量（初始值0），然后遍历数组，累加
 *
 */
public class DoubleArrayDemo {
    public static void main(String[] args) {
        // 选择double去装分数是为了方便计算平均分
        double[] arr = {5, 8, 6, 7, 8, 9, 10, 10, 8, 8};
        System.out.println("平均分是：" + getAverageScore(arr));
    }

    public static double getMaxScore(double[] arr) {
        // 设置首元素是最大值
        double max = arr[0];
        // 遍历数组,逐一比较,求最大值
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                // 找到一个更大的元素,设置它为最大值
                max = arr[i];
            }
        }
        return max;
    }

    public static double getMinScore(double[] arr) {
        // 设置首元素是最小值
        double min = arr[0];
        // 遍历数组,逐一比较,求最小值
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < min) {
                // 找到一个更小的元素,设置它为最小值
                min = arr[i];
            }
        }
        return min;
    }

    public static double getAverageScore(double[] arr) {
        // 先把数组所有元素加起来,然后减掉数组中的最大值和最小值,除以8
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        // static方法之间是可以互相调用的，前提是在一个类中
        double score = sum - getMaxScore(arr) - getMinScore(arr);
        return score / 8;
    }
}
